/*
 * Copyright (C) 拾光分享网
 * All rights reserved, Designed By www.hiai.top.
 * Email：goodsking@163.com.
 * Version：V1.0.2(20230701).
 */
package top.hiai.user.index;

import com.jfinal.core.NotAction;
import top.hiai.common.constant.StstemDataConstants;
import top.hiai.common.group.SystemDataService;
import top.hiai.common.model.User;
import top.hiai.config.BaseController;

/**
 * @Author www.hiai.top
 * @Email goodsking@163.com
 * @Message 更多资源尽在www.hiai.top
 * @Introduction 类的介绍：所有用户的控制器,可以显示用户的个人主页，显示了该用户的粉丝，好友，文章等
 */

public class IndexUserController extends BaseController {

    IndexUserService indexUserService = new IndexUserService();
    SystemDataService systemDataService = new SystemDataService();

    /**
     * 判断双方是不是粉丝或关注
     * friendRelation = -1	访问者就是A，也就是A用户看了A用户的空间
     * friendRelation = 0   A没有关注B
     * friendRelation = 1 	A关注了B
     */

    public static int friendRelation = 0;

    /**
     * 渲染所有用户的列表的视图
     */
    public void index() {
        /** 当前页*/
        int p = getParaToInt("p", 1);
        setAttr("userList", indexUserService.userListPage(p, limtCount));
        setAttr("setP", p);
        /** 广告位置*/
        setAttr("advImg", systemDataService.findByName(StstemDataConstants.USER_ADV));
        render("index.html");
    }

    /**
     * 用户详情页面
     */
    public void detail() {
        //获取ID
        Integer uid = getParaToInt();
        //判断用户是否登录
        boolean is_true_login = isLogin();
        //如果登录了就获取用户的登录用户ID
        if (is_true_login) {
            int accountId = getLoginAccountId();
            getFriendRelation(accountId, uid);
        }
        //获取用户的信息
        User user = indexUserService.getDetailUser(uid);
        //获取这个用户的所有文章
        setAttr("userArticleList", indexUserService.getUserArticleListByUserContent(getParaToInt("p", 1), limtCount, uid));

        //获取这个用户的回复内容
        setAttr("userReplyList", indexUserService.getUserReplyList(uid));

        //获取这个用户的关注的人
        setAttr("userAttentionList", indexUserService.getUserAttentionList(uid));

        //获取这个用户的粉丝列表
        setAttr("userFanList", indexUserService.getUserFanList(uid));

        //获取这个用户有多少个粉丝
        setAttr("userFanCount", indexUserService.getUserFanCount(uid));

        //把是否关注了传给前段
        setAttr("friendRelation", friendRelation);

        //传标题
        setAttr("seoTitle", user.getNickName() + "的个人主页");

        /**
         * 判断用户是否重复提交数据，重复请求判断
         *
         * 调用幂等性工具判断
         *
         * */
//        if (IdempotentUtil.check(String.valueOf(uid), this.getClass())) {
//        }
        //用户主页浏览量加1
        indexUserService.initUserView(uid);
        setAttr("user", user);
        render("datail.html");
    }

    /**
     * 判断用户之间是否关注了
     */
    @NotAction
    public void getFriendRelation(int accountId, int uid) {
        int friendRelations = indexUserService.getFriendRelation(accountId, uid);
        friendRelation = friendRelations;
    }

}